<?xml version="1.0" encoding="UTF-8"?>

<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<project
        xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>23</version>
        <relativePath/>
    </parent>

    <!--
        NOTE:
        The ignite-parent module is used as a shared pom between the Ignite internal submodules and the Ignite Extensions.
        This parent module will be released each time a new Ignite release occurs, so, if you're adding a new
        maven profile, plugin or dependency only for Ignite submodule in this scm use the `parent-internal`
        maven project instead.
        Also, please, use the maven `$project` substitution variables in this pom.xml carefully (e.g. `${project.version}`)
        since for in the Ignite Extension projects they may be inlined the different values.
    -->

    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-parent</artifactId>
    <version>${revision}</version>
    <packaging>pom</packaging>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>

        <revision>2.17.0-SNAPSHOT</revision>
        <!-- Ignite version will be substituted with the flatten-maven-plugin and used as
            a version dependency for Ignite extensions. -->
        <ignite.version>${revision}</ignite.version>
        <ignite.edition>apache-ignite</ignite.edition>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.build.timestamp.format>MMMM d yyyy</maven.build.timestamp.format>
        <doxygen.exec>doxygen</doxygen.exec>
        <docfx.exec>docfx</docfx.exec>
        <git.exec>git</git.exec>
        <javadoc.opts>-Xdoclint:none</javadoc.opts>
        <update.notifier.enabled.by.default>true</update.notifier.enabled.by.default>
        <failIfNoTests>false</failIfNoTests>

        <!-- Dependency versions -->
        <activemq.version>5.12.0</activemq.version>
        <aopalliance.bundle.version>1.0_6</aopalliance.bundle.version>
        <asm.version>4.2</asm.version>
        <aspectj.bundle.version>1.8.13_1</aspectj.bundle.version>
        <aspectj.version>1.8.13</aspectj.version>
        <netty.version>4.1.101.Final</netty.version>
        <bouncycastle.version>1.69</bouncycastle.version>
        <commons.beanutils.bundle.version>1.9.2_1</commons.beanutils.bundle.version>
        <commons.beanutils.version>1.9.4</commons.beanutils.version>
        <commons.codec.version>1.16.0</commons.codec.version>
        <commons.collections.version>3.2.2</commons.collections.version>
        <commons.lang.version>2.6</commons.lang.version>
        <commons.io.version>2.11.0</commons.io.version>
        <commons.dbcp.version>1.4</commons.dbcp.version>
        <cron4j.version>2.2.5</cron4j.version>
        <curator.version>5.2.0</curator.version>
        <easymock.version>3.4</easymock.version>
        <ezmorph.bundle.version>1.0.6_1</ezmorph.bundle.version>
        <ezmorph.version>1.0.6</ezmorph.version>
        <guava.retrying.version>2.0.0</guava.retrying.version>
        <guava.version>32.1.2-jre</guava.version>
        <guava14.version>14.0.1</guava14.version>
        <guava16.version>16.0.1</guava16.version>
        <grpc-context.version>1.62.2</grpc-context.version>
        <h2.version>1.4.197</h2.version>
        <hadoop.version>2.9.1</hadoop.version>
        <hamcrest.version>2.2</hamcrest.version>
        <httpclient.version>4.5.13</httpclient.version>
        <httpcore.version>4.4.14</httpcore.version>
        <jackson.version>2.14.0</jackson.version>
        <jaxb.api.version>2.1</jaxb.api.version>
        <jaxb.impl.version>2.1.14</jaxb.impl.version>
        <javassist.version>3.28.0-GA</javassist.version>
        <javax.cache.bundle.version>1.0.0_1</javax.cache.bundle.version>
        <javax.cache.tck.version>1.1.0</javax.cache.tck.version>
        <javax.cache.version>1.0.0</javax.cache.version>
        <jboss.rmi.version>1.0.6.Final</jboss.rmi.version>
        <jetbrains.annotations.version>16.0.3</jetbrains.annotations.version>
        <jetty.version>9.4.53.v20231009</jetty.version>
        <jmh.version>1.13</jmh.version>
        <jms.spec.version>1.1.1</jms.spec.version>
        <jna.version>4.5.2</jna.version>
        <jnr.posix.version>3.1.15</jnr.posix.version>
        <jotm.version>2.3.1-M1</jotm.version>
        <jsch.bundle.version>0.1.54_1</jsch.bundle.version>
        <jsch.version>0.1.54</jsch.version>
        <jsonlib.bundle.version>2.4_1</jsonlib.bundle.version>
        <jsonlib.version>2.4</jsonlib.version>
        <jtidy.version>r938</jtidy.version>
        <kafka.version>3.4.0</kafka.version>
        <log4j2.version>2.22.0</log4j2.version>
        <lucene.bundle.version>7.4.0_1</lucene.bundle.version>
        <lucene.version>8.11.2</lucene.version>
        <lz4.version>1.8.0</lz4.version>
        <maven.bundle.plugin.version>3.5.0</maven.bundle.plugin.version>
        <maven.checkstyle.plugin.version>3.1.1</maven.checkstyle.plugin.version>
        <maven.flatten.plugin.version>1.2.7</maven.flatten.plugin.version>
        <maven.flatten.file.name>pom-installed.xml</maven.flatten.file.name>
        <maven.model.version>3.8.4</maven.model.version>
        <checkstyle.puppycrawl.version>8.45</checkstyle.puppycrawl.version>
        <mockito.version>3.12.4</mockito.version>
        <mysql.connector.version>8.0.30</mysql.connector.version>
        <netlibjava.version>1.1.2</netlibjava.version>
        <oro.bundle.version>2.0.8_6</oro.bundle.version>
        <paho.version>1.0.2</paho.version>
        <postgres.connector.version>42.6.0</postgres.connector.version>
        <scala210.jline.version>2.10.7</scala210.jline.version>
        <scala210.library.version>2.10.7</scala210.library.version>
        <scala.library.version>2.11.12</scala.library.version>
        <scala.test.version>2.2.6</scala.test.version>
        <slf4j.version>1.7.33</slf4j.version>
        <slf4j16.version>1.6.4</slf4j16.version>
        <snappy.version>1.1.10.4</snappy.version>
        <spring.version>5.2.25.RELEASE</spring.version>
        <storm.version>1.1.1</storm.version>
        <surefire.version>3.1.2</surefire.version>
        <tomcat.version>9.0.63</tomcat.version>
        <twitter.hbc.version>2.2.0</twitter.hbc.version>
        <yammer.metrics.annotation.version>2.2.0</yammer.metrics.annotation.version>
        <yammer.metrics.core.version>2.2.0</yammer.metrics.core.version>
        <yardstick.version>0.8.3</yardstick.version>
        <zkclient.version>0.5</zkclient.version>
        <zookeeper.version>3.8.3</zookeeper.version>
        <zstd.version>1.5.5-5</zstd.version>
        <opencensus.version>0.31.1</opencensus.version>
        <commons.lang3.version>3.9</commons.lang3.version>
        <ignite-kafka-ext.version>1.0.0</ignite-kafka-ext.version>

        <!-- Maven plugins versions -->
        <maven.javadoc.plugin.version>3.2.0</maven.javadoc.plugin.version>
        <sonar.organization>apache</sonar.organization>
        <sonar.host.url>https://sonarcloud.io</sonar.host.url>
        <sonar.exclusions>**/generated/**/*</sonar.exclusions>

        <!-- OSGI Manifest generation default property values -->
        <osgi.import.package>*</osgi.import.package>
        <osgi.export.package>{local-packages}</osgi.export.package>

        <flattenMode>clean</flattenMode>

        <ignite.platform.full.version>
            ${ignite.majorVersion}.${ignite.minorVersion}.${ignite.incrementalVersion}.${ignite.buildNumber}
        </ignite.platform.full.version>
    </properties>

    <url>https://ignite.apache.org</url>

    <description>Apache Ignite® is a Distributed Database For High-Performance Computing With In-Memory Speed.</description>

    <scm>
        <url>https://gitbox.apache.org/repos/asf/ignite.git</url>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/ignite.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/ignite.git</developerConnection>
        <tag>HEAD</tag>
    </scm>

    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>

    <mailingLists>
        <mailingList>
            <name>Ignite Dev List</name>
            <subscribe>dev-subscribe@ignite.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@ignite.apache.org</unsubscribe>
            <post>dev@ignite.apache.org</post>
            <archive>https://mail-archives.apache.org/mod_mbox/ignite-dev</archive>
        </mailingList>
        <mailingList>
            <name>Ignite User List</name>
            <subscribe>user-subscribe@ignite.apache.org</subscribe>
            <unsubscribe>user-unsubscribe@ignite.apache.org</unsubscribe>
            <post>user@ignites.apache.org</post>
            <archive>https://mail-archives.apache.org/mod_mbox/ignite-user/</archive>
        </mailingList>
    </mailingLists>

    <issueManagement>
        <system>jira</system>
        <url>https://issues.apache.org/jira/browse/IGNITE</url>
    </issueManagement>

    <ciManagement>
        <system>teamcity</system>
        <url>https://ci.ignite.apache.org/</url>
    </ciManagement>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>${javassist.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${maven.checkstyle.plugin.version}</version>
                    <configuration>
                        <skip>true</skip>
                        <!-- The source directories tag below is used to dynamically add the sources in case
                            additional build profiles are activated (combine.children="append" is used). -->
                        <sourceDirectories>
                            <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                            <sourceDirectory>${project.build.testSourceDirectory}</sourceDirectory>
                        </sourceDirectories>
                        <consoleOutput>true</consoleOutput>
                        <logViolationsToConsole>true</logViolationsToConsole>
                        <failsOnError>true</failsOnError>
                        <failOnViolation>true</failOnViolation>
                        <outputFile>${project.build.directory}/checkstyle-result.xml</outputFile>
                        <!-- This configuration checkstyle files will be obtained from the 'ignite-checkstyle' resources. -->
                        <configLocation>checkstyle/checkstyle.xml</configLocation>
                        <suppressionsLocation>checkstyle/checkstyle-suppressions.xml</suppressionsLocation>
                        <includeTestSourceDirectory>true</includeTestSourceDirectory>
                        <excludes>**/generated/**/*</excludes>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>${checkstyle.puppycrawl.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>ignite-checkstyle</artifactId>
                            <version>${ignite.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>net.alchim31.maven</groupId>
                    <artifactId>scala-maven-plugin</artifactId>
                    <version>3.3.2</version>
                    <configuration>
                        <jvmArgs>
                            <jvmArg>-Xms512m</jvmArg>
                            <jvmArg>-Xmx1024m</jvmArg>
                        </jvmArgs>
                        <args>
                            <arg>-nobootcp</arg>
                        </args>
                    </configuration>
                    <executions>
                        <execution>
                            <id>scala-compile-first</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>add-source</goal>
                                <goal>compile</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>scala-test-compile</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>testCompile</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven.javadoc.plugin.version}</version>
                    <configuration>
                        <taglets>
                            <taglet>
                                <tagletClass>org.apache.ignite.tools.javadoc.IgniteLinkTaglet</tagletClass>
                                <tagletArtifact>
                                    <groupId>${project.groupId}</groupId>
                                    <artifactId>ignite-tools</artifactId>
                                    <version>${ignite.version}</version>
                                </tagletArtifact>
                            </taglet>
                        </taglets>
                        <doctitle>Ignite ${ignite.version}</doctitle>
                        <windowtitle>Ignite ${ignite.version}</windowtitle>
                        <breakiterator>true</breakiterator>
                        <verbose>true</verbose>
                        <show>protected</show>
                        <use>true</use>
                        <author>false</author>
                        <version>false</version>
                        <additionalOptions>${javadoc.opts}</additionalOptions>
                        <bottom>
                            <![CDATA[
                                    <table width="100%" border="0" cellspacing=0 cellpadding=0 style="padding: 5px">
                                    <tr>
                                        <td>
                                            <table style="padding-left: 0; margin: 0">
                                                <tbody style="padding: 0; margin: 0">
                                                    <tr style="padding: 0; margin: 0">
                                                        <td>
                                                            <a target=_blank href="https://ignite.apache.org"><nobr>${current.year} Copyright &#169; Apache Software Foundation</nobr></a>
                                                        </td>
                                                    </tr>
                                                </tbody>
                                            </table>
                                        </td>
                                        <td width="100%" align="right" valign="center">
                                            <a href="https://twitter.com/ApacheIgnite" class="twitter-follow-button" data-show-count="false" data-size="large">Follow @ApacheIgnite</a>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td colspan="2" valign="top" align="left">
                                            <table style="padding-left: 0; margin: 0">
                                                <tbody style="padding: 0; margin: 0">
                                                    <tr style="padding: 0; margin: 0">
                                                        <td>
                                                            <b>Ignite Database and Caching Platform</b>
                                                        </td>
                                                        <td>:&nbsp;&nbsp;
                                                            ver. <strong>${project.version}</strong>
                                                        </td>
                                                    </tr>
                                                    <tr style="padding: 0; margin: 0">
                                                        <td>
                                                            <b>Release Date</b>
                                                        </td>
                                                        <td>:&nbsp;&nbsp;
                                                            ${maven.build.timestamp}
                                                        </td>
                                                    </tr>
                                                </tbody>
                                            </table>
                                        </td>
                                    </tr>
                                    </table>
                                ]]>
                        </bottom>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>${maven.bundle.plugin.version}</version>
                    <extensions>true</extensions>
                    <configuration>
                        <archive>
                            <addMavenDescriptor>true</addMavenDescriptor>
                        </archive>
                        <supportedProjectTypes>
                            <supportedProjectType>jar</supportedProjectType>
                            <supportedProjectType>war</supportedProjectType>
                        </supportedProjectTypes>
                        <instructions>
                            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
                            <Bundle-Version>${project.version}</Bundle-Version>
                            <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>
                            <Bundle-Description>${project.description}</Bundle-Description>
                            <Bundle-DocURL>${project.url}</Bundle-DocURL>
                            <Import-Package>
                                ${osgi.import.package}
                            </Import-Package>
                            <Export-Package>
                                ${osgi.export.package}
                            </Export-Package>
                            <Private-Package>
                                ${osgi.private.package}
                            </Private-Package>
                            <Embed-Dependency>false</Embed-Dependency>
                            <Embed-Directory>lib</Embed-Directory>
                            <Embed-Transitive>false</Embed-Transitive>
                            <_failok>false</_failok>
                            <_invalidfilenames/>
                        </instructions>
                    </configuration>
                    <executions>
                        <execution>
                            <id>bundle-manifest</id>
                            <phase>process-classes</phase>
                            <goals>
                                <goal>manifest</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${surefire.version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>ignite-tools</artifactId>
                            <version>${ignite.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.3.2</version>
                    <dependencies>
                        <dependency>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>ignite-tools</artifactId>
                            <version>${ignite.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>flatten-maven-plugin</artifactId>
                    <version>${maven.flatten.plugin.version}</version>

                    <executions>
                        <execution>
                            <id>flatten</id>
                            <configuration>
                                <flattenMode>oss</flattenMode>
                                <flattenedPomFilename>${maven.flatten.file.name}</flattenedPomFilename>
                            </configuration>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>flatten</goal>
                            </goals>
                        </execution>

                        <!-- ensure proper cleanup before start -->
                        <execution>
                            <id>flatten.clean.before</id>
                            <configuration>
                                <flattenedPomFilename>${maven.flatten.file.name}</flattenedPomFilename>
                            </configuration>
                            <phase>clean</phase>
                            <goals>
                                <goal>clean</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>

                <configuration>
                    <forkCount>0</forkCount>
                    <statelessTestsetInfoReporter implementation="org.apache.ignite.tools.surefire.TestSuiteAwareTestsetReporter"/>
                    <properties>
                        <property>
                            <name>listener</name>
                            <value>org.apache.ignite.tools.junit.JUnitTeamcityReporter</value>
                        </property>
                    </properties>
                    <includes>
                        <!-- Check all classes that may have any test. -->
                        <include>**/*.java</include>
                    </includes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>source</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <excludeResources>true</excludeResources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>

                <executions>
                    <!-- disable flattering for parent pom. -->
                    <execution>
                        <id>flatten</id>
                        <inherited>false</inherited>
                        <phase/>
                    </execution>

                    <execution>
                        <id>flatten-parent</id>
                        <inherited>false</inherited>
                        <configuration>
                            <updatePomFile>true</updatePomFile>
                            <flattenMode>resolveCiFriendliesOnly</flattenMode>
                            <flattenedPomFilename>${maven.flatten.file.name}</flattenedPomFilename>
                            <pomElements>
                                <properties>resolve</properties>
                            </pomElements>
                        </configuration>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>flatten</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0-M2</version>
                <configuration>
                    <rules>
                        <requireMavenVersion>
                            <version>[3.5.0,)</version>
                        </requireMavenVersion>
                    </rules>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-libs</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <excludeGroupIds>${project.groupId}</excludeGroupIds>
                            <outputDirectory>target/libs</outputDirectory>
                            <includeScope>runtime</includeScope>
                            <excludeTransitive>true</excludeTransitive>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <executions>
                    <execution>
                        <id>module-javadoc</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <phase>package</phase>
                    </execution>
                </executions>
            </plugin>

            <!-- Thin clients have the own versions format. We need to prepare required properties.-->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <!--
                            This will create the following properties:
                            ignite.majorVersion, ignite.minorVersion, ignite.incrementalVersion
                        -->
                        <id>parse-version</id>
                        <goals>
                            <goal>parse-version</goal>
                        </goals>
                        <phase>validate</phase>
                        <configuration>
                            <propertyPrefix>ignite</propertyPrefix>
                        </configuration>
                    </execution>
                    <execution>
                        <id>thin-timestamp-property</id>
                        <goals>
                            <goal>timestamp-property</goal>
                        </goals>
                        <phase>validate</phase>
                        <configuration>
                            <name>ignite.buildNumber</name>
                            <!-- See: https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html -->
                            <pattern>yywwu</pattern>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- Generate the OSGi MANIFEST.MF for this bundle. -->
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>checkstyle</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <configuration>
                            <skip>false</skip>
                        </configuration>
                        <executions>
                            <execution>
                                <id>style</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>compile</phase>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.ignite</groupId>
                                <artifactId>ignite-checkstyle</artifactId>
                                <version>${revision}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>check-licenses</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.rat</groupId>
                        <artifactId>apache-rat-plugin</artifactId>
                        <version>0.12</version>
                        <configuration>
                            <addDefaultLicenseMatchers>true</addDefaultLicenseMatchers>
                            <licenses>
                                <license implementation="org.apache.rat.analysis.license.FullTextMatchingLicense">
                                    <licenseFamilyCategory>IAL20</licenseFamilyCategory>
                                    <licenseFamilyName>Ignite Apache License 2.0</licenseFamilyName>
                                    <fullText>
                                        Licensed to the Apache Software Foundation (ASF) under one or more
                                        contributor license agreements.  See the NOTICE file distributed with
                                        this work for additional information regarding copyright ownership.
                                        The ASF licenses this file to You under the Apache License, Version 2.0
                                        (the "License"); you may not use this file except in compliance with
                                        the License.  You may obtain a copy of the License at

                                        http://www.apache.org/licenses/LICENSE-2.0

                                        Unless required by applicable law or agreed to in writing, software
                                        distributed under the License is distributed on an "AS IS" BASIS,
                                        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                                        See the License for the specific language governing permissions and
                                        limitations under the License.
                                    </fullText>
                                </license>
                            </licenses>
                            <licenseFamilies>
                                <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
                                    <familyName>Ignite Apache License 2.0</familyName>
                                </licenseFamily>
                            </licenseFamilies>
                        </configuration>
                        <executions>
                            <execution>
                                <id>check-licenses</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <configuration>
                                    <excludes>
                                        <exclude>work/**</exclude>
                                        <exclude>**/target/**</exclude>
                                        <exclude>**/*.log</exclude>
                                        <exclude>**/*.m4</exclude><!--Free Software Foundation notice-->
                                        <exclude>**/*.dylib</exclude><!--bin-files-->
                                        <exclude>**/*.gar</exclude><!--bin-files-->
                                        <exclude>**/licenses/*.txt</exclude><!--files of licenses-->
                                        <exclude>**/*readme*.txt</exclude><!--readme files-->
                                        <exclude>**/*.sql</exclude><!--sql files-->
                                        <exclude>**/*README*.txt</exclude><!--readme files-->
                                        <exclude>**/*README*.md</exclude><!--readme files-->
                                        <exclude>**/*CONTRIBUTING*.md</exclude><!--readme files-->
                                        <exclude>**/*DEVNOTES*.md</exclude><!--readme files-->
                                        <exclude>**/*index*.md</exclude><!--readme files-->
                                        <exclude>**/*.timestamp</exclude><!--tmp-files-->
                                        <exclude>**/*.iml</exclude><!--IDEA files-->
                                        <exclude>**/*.csv</exclude><!--CSV files-->
                                        <exclude>**/*.jks</exclude><!--bin-files-->
                                        <exclude>**/pom-installed.xml</exclude><!--tmp-files-->
                                        <exclude>**/keystore</exclude><!--bin-files-->
                                        <exclude>**/keystore/*.jks</exclude><!--bin-files-->
                                        <exclude>**/keystore/*.pem</exclude><!--auto generated files-->
                                        <exclude>**/keystore/*.pfx</exclude><!--bin-files-->
                                        <exclude>**/keystore/ca/*.jks</exclude><!--bin-files-->
                                        <exclude>**/keystore/ca/*.key</exclude><!--bin-files-->
                                        <exclude>**/keystore/ca/*.txt</exclude><!--auto generated files-->
                                        <exclude>**/keystore/ca/*.txt.attr</exclude><!--auto generated files-->
                                        <exclude>**/keystore/ca/*serial</exclude><!--auto generated files-->
                                        <exclude>**/META-INF/services/**</exclude> <!-- Interface mappings: cannot be changed -->
                                        <exclude>**/id_rsa**</exclude>  <!--SSH-->
                                        <!--special excludes-->
                                        <exclude>.travis.yml</exclude>
                                        <exclude>.github/PULL_REQUEST_TEMPLATE.md</exclude>
                                        <exclude>idea/ignite_codeStyle.xml</exclude>
                                        <exclude>**/DEVNOTES*.txt</exclude>
                                        <exclude>**/NOTICE*</exclude>
                                        <exclude>**/LICENSE*</exclude>
                                        <exclude>**/MIGRATION_GUIDE*</exclude>
                                        <exclude>src/main/java/org/apache/ignite/internal/util/nio/SelectedSelectionKeySet.java</exclude><!-- Apache 2.0 license -->
                                        <exclude>src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/*.java</exclude><!--auto generated files-->
                                        <exclude>src/main/java/org/jsr166/*.java</exclude>
                                        <exclude>src/main/java/org/mindrot/*.java</exclude>
                                        <exclude>src/test/java/org/apache/ignite/p2p/p2p.properties</exclude><!--test depends on file content-->
                                        <exclude>src/test/resources/org.apache.ignite.util/*.output</exclude><!--test depends on file content-->
                                        <exclude>src/test/resources/log/ignite.log.tst</exclude><!--test resource-->
                                        <exclude>src/test/java/org/apache/ignite/spi/deployment/uri/META-INF/ignite.incorrefs</exclude><!--test resource-->
                                        <exclude>src/test/java/org/apache/ignite/spi/deployment/uri/META-INF/ignite.empty</exclude><!--should be empty-->
                                        <exclude>src/test/java/org/apache/ignite/spi/deployment/uri/META-INF/ignite.brokenxml</exclude><!--test resource-->
                                        <exclude>**/books/*.txt</exclude><!--books examples-->
                                        <exclude>src/main/java/org/apache/ignite/examples/streaming/wordcount/*.txt</exclude><!--books examples-->
                                        <exclude>examples/src/main/java/org/apache/ignite/examples/streaming/wordcount/*.txt</exclude><!--books examples-->
                                        <exclude>src/main/java/org/jetbrains/annotations/*.java</exclude><!--copyright-->
                                        <exclude>dev-tools/IGNITE-*.patch</exclude>
                                        <exclude>dev-tools/.gradle/**/*</exclude>
                                        <exclude>dev-tools/gradle/wrapper/**/*</exclude>
                                        <exclude>dev-tools/gradlew</exclude>
                                        <exclude>src/test/binaries/repo/org/apache/ignite/binary/test2/1.1/test2-1.1.pom</exclude>
                                        <exclude>src/test/binaries/repo/org/apache/ignite/binary/test2/maven-metadata-local.xml</exclude>
                                        <exclude>src/test/binaries/repo/org/apache/ignite/binary/test1/1.1/test1-1.1.pom</exclude>
                                        <exclude>src/test/binaries/repo/org/apache/ignite/binary/test1/maven-metadata-local.xml</exclude>
                                        <exclude>src/test/resources/org/apache/ignite/internal/managers/discovery/Wrapper.ser</exclude>
                                    <!--platforms-->
                                        <exclude>src/test/binaries/repo/org/apache/ignite/binary/test1/1.1/test1-1.1.jar</exclude>
                                        <exclude>src/test/binaries/repo/org/apache/ignite/binary/test2/1.1/test2-1.1.jar</exclude>
                                        <exclude>**/*.cmake</exclude>
                                        <exclude>**/CMakeLists.txt</exclude>
                                        <exclude>**/CMakeSettings.json.in</exclude>
                                        <exclude>**/cmake-build-*/</exclude>
                                        <exclude>**/.idea/**</exclude>
                                        <exclude>**/*.pc.in</exclude>
                                        <exclude>**/*.sln</exclude>
                                        <exclude>**/*.snk</exclude>
                                        <exclude>**/*.slnrel</exclude>
                                        <exclude>**/*.ini</exclude>
                                        <exclude>**/*.DotSettings</exclude>
                                        <exclude>**/*.FxCop</exclude>
                                        <exclude>**/*.ruleset</exclude>
                                        <exclude>**/*.csproj</exclude>
                                        <exclude>**/*.ndproj</exclude>
                                        <exclude>**/*.csprojrel</exclude>
                                        <exclude>**/mkbuild.cmd</exclude>
                                        <exclude>**/module.def</exclude>
                                        <exclude>**/*.fxcop</exclude>
                                        <exclude>**/*.ruleset</exclude>
                                        <exclude>**/*.metaproj</exclude>
                                        <exclude>**/*.metaproj.tmp</exclude>
                                        <exclude>**/*.nunit</exclude>
                                        <exclude>**/teamcity_boost.cpp</exclude>
                                        <exclude>**/teamcity_messages.h</exclude>
                                        <exclude>**/teamcity_messages.cpp</exclude>
                                        <exclude>**/obj/x64/**</exclude>
                                        <exclude>**/obj/x86/**</exclude>
                                        <exclude>**/bin/x64/**</exclude>
                                        <exclude>**/bin/x86/**</exclude>
                                        <exclude>**/*.dxg</exclude>
                                        <exclude>**/*.cmd</exclude>
                                        <exclude>**/*.ps1</exclude>
                                        <exclude>**/*.json</exclude>
                                        <exclude>**/.dockerignore</exclude>
                                        <exclude>modules/platforms/dotnet/Apache.Ignite.Core.Tests/Examples/ExpectedOutput/*.txt</exclude>
                                        <!--Packaging -->
                                        <exclude>packaging/**</exclude>
                                        <!-- Calcite test scripts -->
                                        <exclude>src/test/sql/**</exclude>
                                        <!-- Ignite Documentation-->
                                        <exclude>docs/_site/**</exclude>
                                        <exclude>docs/assets/images/**</exclude>
                                        <exclude>docs/Gemfile.lock</exclude>
                                        <exclude>docs/.jekyll-cache/**</exclude>
                                        <exclude>docs/_docs/images/**</exclude>
                                        <exclude>docs/Gemfile</exclude>
                                        <exclude>docs/assets/js/anchor.min.js</exclude><!-- Distributed under the MIT license. The original license header is badly formatted. -->
                                    </excludes>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>surefire-fork-count-1</id>
            <activation>
                <property>
                    <!-- To activate this profile set the following property. -->
                    <name>FORK_COUNT_SET_TO_1</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <forkCount>1</forkCount>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>java-9+</id>
            <activation>
                <jdk>[1.9,15)</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>11</maven.compiler.target>
            </properties>
            <dependencies/>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.7.0</version>
                        <configuration>
                            <compilerArgs>
                                <arg>--add-exports</arg>
                                <arg>java.base/jdk.internal.misc=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.base/sun.nio.ch=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED</arg>
                            </compilerArgs>
                        </configuration>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <argLine>
                                --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
                                --add-exports=java.base/sun.nio.ch=ALL-UNNAMED
                                --add-exports=java.base/jdk.internal.loader=ALL-UNNAMED
                                --add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
                                --add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
                                --add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
                                --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
                                --add-opens=java.base/jdk.internal.access=ALL-UNNAMED
                                --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
                                --illegal-access=permit
                            </argLine>
                        </configuration>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <configuration>
                            <!-- TODO https://issues.apache.org/jira/browse/IGNITE-13202 -->
                            <additionalOptions>${javadoc.opts} --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED</additionalOptions>
                            <detectJavaApiLink>false</detectJavaApiLink>
                        </configuration>
                    </plugin>
                </plugins>
            </build>

            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-common</artifactId>
                        <exclusions>
                            <exclusion>
                                <!-- This dependency is not available with java 9.-->
                                <groupId>jdk.tools</groupId>
                                <artifactId>jdk.tools</artifactId>
                            </exclusion>
                        </exclusions>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-common</artifactId>
                        <type>test-jar</type>
                        <exclusions>
                            <exclusion>
                                <!-- This dependency is not available with java 9.-->
                                <groupId>jdk.tools</groupId>
                                <artifactId>jdk.tools</artifactId>
                            </exclusion>
                        </exclusions>
                    </dependency>
                </dependencies>
            </dependencyManagement>

        </profile>

        <profile>
            <id>java-15+</id>
            <activation>
                <jdk>[15,)</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>15</maven.compiler.target>
                <scala.library.version>2.12.15</scala.library.version>
            </properties>
            <dependencies/>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.7.0</version>
                        <configuration>
                            <compilerArgs>
                                <arg>--add-exports</arg>
                                <arg>java.base/jdk.internal.misc=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.base/jdk.internal.loader=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.base/sun.nio.ch=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.base/sun.net.util=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.base/java.io=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.base/java.nio=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.base/java.util=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.base/java.lang=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.base/java.lang.invoke=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg>
                                <arg>java.sql/java.sql=ALL-UNNAMED</arg>
                            </compilerArgs>
                        </configuration>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <argLine>
                                --add-opens=java.base/jdk.internal.access=ALL-UNNAMED
                                --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
                                --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
                                --add-opens=java.base/sun.net.util=ALL-UNNAMED
                                --add-opens=java.base/sun.nio.ch=ALL-UNNAMED
                                --add-opens=java.base/sun.nio.fs=ALL-UNNAMED
                                --add-opens=java.base/sun.util.calendar=ALL-UNNAMED
                                --add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
                                --add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
                                --add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
                                --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
                                --add-opens=java.base/java.io=ALL-UNNAMED
                                --add-opens=java.base/java.nio=ALL-UNNAMED
                                --add-opens=java.base/java.net=ALL-UNNAMED
                                --add-opens=java.base/java.util=ALL-UNNAMED
                                --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
                                --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED
                                --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
                                --add-opens=java.base/java.lang=ALL-UNNAMED
                                --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
                                --add-opens=java.base/java.math=ALL-UNNAMED
                                --add-opens=java.sql/java.sql=ALL-UNNAMED
                                --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
                                --add-opens=java.base/java.time=ALL-UNNAMED
                                --add-opens=java.base/java.text=ALL-UNNAMED
                                --add-opens=java.base/java.security=ALL-UNNAMED
                                --add-opens=java.management/sun.management=ALL-UNNAMED
                                --add-opens java.desktop/java.awt.font=ALL-UNNAMED
                            </argLine>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>tools.jar-default</id>
            <activation>
                <file>
                    <exists>${java.home}/../lib/tools.jar</exists>
                </file>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.sun</groupId>
                    <artifactId>tools</artifactId>
                    <scope>system</scope>
                    <version>${java.version}</version>
                    <systemPath>${java.home}/../lib/tools.jar</systemPath>
                </dependency>
            </dependencies>
        </profile>

        <profile>
            <id>tools.jar-mac</id>
            <activation>
                <file>
                    <exists>${java.home}/../Classes/classes.jar</exists>
                </file>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.sun</groupId>
                    <artifactId>tools</artifactId>
                    <scope>system</scope>
                    <version>${java.version}</version>
                    <systemPath>${java.home}/../Classes/classes.jar</systemPath>
                </dependency>
            </dependencies>
        </profile>

        <profile>
            <id>licenses</id>

            <dependencies>
                <dependency>
                    <groupId>org.apache.ignite</groupId>
                    <artifactId>ignite-apache-license-gen</artifactId>
                    <version>1.4.0</version>
                </dependency>
            </dependencies>

            <build>
                <plugins>
                    <plugin><!-- generates dependencies licenses -->
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-remote-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>ignite-dependencies</id>
                                <goals>
                                    <goal>process</goal>
                                </goals>
                                <configuration>
                                    <resourceBundles>
                                        <resourceBundle>org.apache.ignite:ignite-apache-license-gen:1.4.0</resourceBundle>
                                    </resourceBundles>
                                    <excludeTransitive>true</excludeTransitive>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>licenses-file-rename</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>compile</phase>
                                <configuration>
                                    <target>
                                        <!-- moving licenses generated by "ignite-dependencies" -->
                                        <move file="${basedir}/target/classes/META-INF/licenses.txt" tofile="${basedir}/target/licenses/${project.artifactId}-licenses.txt"/>
                                    </target>
                                    <failOnError>false</failOnError>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>skip-docs</id>
            <properties>
                <maven.javadoc.skip>true</maven.javadoc.skip>
            </properties>
        </profile>
    </profiles>
</project>
